SQL优化: Xml or Delimited String
全部标签 我在SQLServer中有一个表,它看起来像具有以下列名的任何其他表:primaryID|column1|column2|column3|column4|column5我需要获取该表中的不同字段并创建以下格式的XML:在这种情况下,节点是为表中的每条记录创建的。该节点针对该特定记录的每一列完成。我已经尝试了RAW、PATH、ROOT和EXPLICIT的所有可能组合,但均无济于事。我提出的建议在SQLServer中是否可行,还是我需要在其他地方执行? 最佳答案 您必须指定forxml路径才能获取所需的节点。这是基于您的示例的示例:CR
我尝试将XML文件添加到SQL2008。我的XML:SQL列:Name=SectionName,Cat=SectionIndex,Index=ItemIndex,Slot=ItemSlot.我的例子:DECLARE@inputXML='MYXMLfile'SELECTName=XCol.value('@Index','varchar(25)'),Cat=XCol.value('@Name','varchar(25)'),[Index]='Unknown',/*Indexfrom*/Slot='Unknown'/*Slotfrom*/FROM@input.nodes('/ItemList
我有一个非常简单的xml文档。唯一的区别是元素可以改变。有一次我可能会:BobSmithJohnDoe下次我可能会:ClevelandOHChicagoIL我想编写一个select语句,根据我目前获得的xml文档生成一个动态表。例如:对于第一个:FirstNameLastName------------------------BobSmithJohnDoeEtc...第二个CityState-----------------------ClevelandOHChicagoILEtc...这两个例子没有任何关系(Bob不是来自克利夫兰等...)我只想使用相同的代码生成两个表...取决于x
我无法理解我看到的其他问题,因为它们有点不同。我从网络服务viUTL_HTTP得到一个XML作为响应。XML具有重复的子节点,我只想提取1个特定值。响应XML:Form11234Form24442Form39995我需要提取节点只有节点="Form3".因此,在我的代码中,我收到了来自另一个函数的响应v_ds_xml_responseXMLTYPE;--Herewouldlietherestofthecode(omitted)preparingtheXMLandnextcallingthefunctionwithit:V_DS_XML_RESPONSE:=FUNCTION_CALL_W
我正在尝试搜索存储在varchar(max)列中的xml数据。下面是在varchar列中找到的xml数据字符串之一的示例在这个例子中,我将有一个名为@dsName的sql变量,当它的值与@dsName匹配并且它从属于任一节点或节点时,它将与节点匹配。介于两者之间或直到您到达的节点可能会有所不同。test0falseAdminfalsefalsefalsereade-mailandapproveordenyfalsefalsetrueloblookupfalsetruetruelobComboboxlobloblookuplobfalseloblookuptrueSTRINGWhatev
按照function我已经写了它接受xml并返回table作为结果。CREATEFUNCTIONFunctionTest(@IDINT,@XML_Detailsxml)RETURNS@RESULTTABLE(Value1INT,Value2INT)ASBEGINDECLARE@tbl_Xml_ResultTable(Value1INT,Value2INT)INSERTINTO@RESULT(Value1,Value2)SELECTl.v.value('Value2[1]','INT'),l.v.value('Value1[1]','INT')FROM@XML_Details.nodes
我想使用tsql从xml文件中获取ChargeType的值。我写了脚本,但它总是为两个xml记录返回值“Principal”。我不明白哪里出了问题以及如何解决问题?脚本应返回值:ChargeTypePrincipalTaxed当前结果ChargeTypePrincipalPrincipal源代码DECLARE@xmlXML='Principal20.4RURTaxed1.23GEL';;WITHXMLNAMESPACES('http://www.test.com'asns)selectlfer.c.value('(//ns:ChargeType)[1]','nvarchar(50)')
我必须提取电子邮件Subject来自XML存储为nvarchar.我正在使用这个查询:SELECTrtrim((SELECTCAST(SUBSTRING([XML],patindex('%%',[XML]),patindex('%%',[XML])-patindex('%%',[XML])+len(''))asXML).value('(/SUBJECT/OPTION)[1]','nvarchar(2000)')FROMdbo.Mails))asSUBJECT此查询首先提取包含电子邮件主题(....)的字符串,我将其转换为XML,然后使用value获取主题值XML函数。这工作正常,但在某
我有下一个XML:SET@MyXML='FranceParisEnglandLondonSpainMadrid'我需要以这种方式从这个XML中获取数据-我设置了参数“England”并获取“London”。接下来是我的代码,但它不起作用:SELECTTab.Col.query('p/.[(Val)[1]castasxs:string?="England"]')AS[Capital]FROM@MyXML.nodes('//pairs')Tab(Col)我想念什么?谢谢! 最佳答案 您的XQuery对象构造不正确。这将得到其中有作为"E
我正在使用MicrosoftSQL服务器。我有一个简单的层次结构,如Xml中的方向图:DECLARE@XMLasXML=CAST('23413'ASXML);我想要的输出是这样的表格:SOURCE_NODE_ID|DEST_NODE_ID1|21|31|42|12|3这样的查询:SELECTB.value('data(@NODE_ID)','int')ASSOURCE_NODE_ID,A.B.value('(EDGE/text())[1]','int')ASDEST_NODE_IDFROM@XML.nodes('/ROOT/NODE')ASA(B);只返回第一条边:SOURCE_NOD